home *** CD-ROM | disk | FTP | other *** search
/ System Booster / System Booster.iso / Systemmonitors / SWAP / SWAP.ReadMe < prev    next >
Text File  |  1996-09-26  |  7KB  |  168 lines

  1.  
  2. Program name:  SWAP
  3.  
  4. Written with:  Lattice C 3.1 and Cape Assembler
  5.  
  6. Machine:       Standard Amiga 500 with OS1.3, One floppy drive,1 MByte RAM
  7.  
  8. Author:        Kamran Karimi
  9.  
  10. Source:        Included
  11.  
  12. What it does:  tries to bring swapping to Amiga without any special hardware  
  13.  
  14. Program status:The program can be used freely but I retain the Copyright to
  15. both the source and executable forms of the program.
  16.  
  17. Directory contents:
  18.  SWAP        52620 bytes
  19.  SWAP.c
  20.  PatchSignaling.s
  21.  SWAP.ReadMe
  22.  
  23.  
  24.  IMPORTANT:
  25.  
  26.  The Swapping portion of this program is not very reliable as  its 
  27. functions are not supported by the OS. Do NOT swap out programs with
  28. valuable data gathered or computations done as you may not be able to swap 
  29. them in again.
  30.  
  31.  
  32.  
  33.  
  34.  Memory management may be considered as one of the weak points of Amiga OS.
  35. SWAP is written as a trial to provide swapping for Amigas without any special
  36. hardware. The main intention is to let the user choose a task, swap it to 
  37. disk so that its occupied memory is released, and do other things. Later on,
  38. he could swap the program back to main memory and let it continue from the
  39. point it was interrupted. If The Operating System was capable of swapping,
  40. then it could do the swappings automatically, but now the user should decide
  41. when to swap out or in. Also if the OS supported these functions, it could 
  42. move memory around and help the swap-in process, but it does not.
  43.  
  44.  
  45.  The program lets the user do other things as well. A list of all tasks in the
  46. system is shown and the user can select them by clicking on the desired one.
  47. the name of the selected task and its task structure address is shown.
  48.  
  49.  The actions that can be applied to the selected task depend on the task state
  50. and the program enables/disables gadgets depending on it. here is a brief
  51. description of the gadget functions.
  52.  
  53.  Upadate: searches the task lists in the system and displays them. also 
  54. updates the available memory and swap space. the swap space is the space
  55. available on the volume indicated in the string gadget.
  56.  
  57.  Info: shows the contents of the task structure belonging to the currently
  58. selected task.
  59.  
  60.  Freeze: puts the task in the EXECBase IntrList so that it is not executed
  61. any more. It is changed to 'Melt' whenever a frozen task is chosen.
  62.  
  63.  Pri: changes the task priority. the new priority should be given in the
  64. string gadget.
  65.  
  66.  Kill: removes the task from system but first searches the PortList and
  67. removes any port belonging to the selected task, with the exception of the
  68. IDCMP ports.
  69.  
  70.  Swap In: Reads from the file indicated in the string gadget and tries 
  71. to swap the selceted task in. It may not be successful all the times!.
  72.  
  73.  Swap Out: swaps the selected task out and writes it to the file indicated
  74. by the string gadget. It will be active only when you first click on the
  75. "Segs" gadget.
  76.  
  77.  Signal: Signals the selected task. The signal mask should be given in the
  78. string gadget.
  79.  
  80.  Break: Sends break to the selected task if it is ready to accept them.
  81.  
  82.  Segs: Shows the segments in memory belonging to the selected task.
  83.  
  84.  Memory: Displays the free memory list. It is not precise because some memory
  85. is allocated to display the information themselves!.  
  86.  
  87.  W&S: Windows and Screens. Shows the screens and the windows in them.
  88. windows belonging to a screen are shown below it. One can close them. If a
  89. screen is selected to close, then all its windows are closed before it.
  90.  
  91.  Find Intruder: In case there are dificulties swapping a program in, this
  92. gadget can be tried. It searches the tasks and their segments in memory
  93. to find out if a task has been loaded in a part of memory needed by the 
  94. swapped out program. It can not search memory allocated in any way other than
  95. program-loading.
  96.  
  97.  Exit: Exits the program after asking for confirmation.
  98.  
  99.  Some of the options require confirmation. If so, a message telling this
  100. is displayed in the message area. if you want the operation done, click
  101. on the gadget again. Otherwise, click on any other gadget.
  102.  
  103.  
  104.  How to swap a program out:
  105.  
  106.  Select the task you want to swap. Don't choose vital system tasks as you
  107. may lock the computer. press the 'Segs' button and a list of the task's
  108. segments in memory is displayed. If possible, the 'Swap Out' gadget is
  109. enabled. Write the full path and name of the file you want the swap image to
  110. be writen to. The default path is 'df0:', add the name of the swap file after 
  111. it or give a new file and path name. Click the 'Swap Out' gadget and wait
  112. until it is finished.
  113.  
  114.  To swap a program in, select it. The 'Swap In' gadget will become enabled.
  115. Click on it an then hope that everything goes OK!. If problems occured,
  116. refer to the hints written some lines below. 
  117.  
  118.  
  119.  Internals of swapping routines: 
  120.  
  121.  The swapping portion of the program works as follows: the chosen task is
  122. removed from ready or waiting queue and inserted in the IntrList list in the
  123. EXECBase structure. Its segments in memory are traversed and an exact copy of
  124. them is made on the floppy/hard disk, and then the segments are released.task
  125. state is changed. PutMsg() and Signal() routines are patched so as to prevent 
  126. the system from acting on the swapped tasks, which would lead to a crash.
  127.  Memory allocated by using AllocMem() or other similar functions are not
  128. freed, also screens and windows belonging to the swapped task remain untact.
  129.  
  130.  when swapping in, the program uses AllocAbs() to gain the original memory 
  131. area back and copy the file image there. If the call is successful, the
  132. program will be back in memory and may continue execution. But it is quite
  133. possible that the required memory is occupied!. In this case the swapping will
  134. fail. If the failer occurred after the allocation of a number of segments,
  135. then all the previously allocated memory if freed an you can try swapping 
  136. the program in at a later time (perhaps after carrying out a few of the 
  137. suggestions given below).
  138.  
  139.  
  140.  Hints:
  141.  
  142.  The following can be tried in case of difficulties in swapping a program in:
  143. Make  windows on the screens as small as possible and if possible, close
  144. them. Even typing at the keyboard causes memory allocation. Try the 
  145. 'Find Intruder' option in SWAP. If an intruder is found, quit it and try to
  146. swap in again. If it does not work, you may have to quit all the tasks started
  147. after the swapping one by one. Do not quit the SWAP after swapping a program
  148. as reloading it may cause allocation of memory in parts needed by the swapped
  149. program. As the Lattice C 3.1 does not have an option to let one place an 
  150. structure in CHIP memory, Allocmem() was used to get mem for the up an down
  151. arrow pointer images in the SWAP screen. This memory can not be checked by 
  152. 'Find Intruder' option.
  153.  
  154.  
  155.  
  156.   
  157.  Send Bug reports and suggestions to 
  158.  
  159.     Kamran Karimi
  160.     2,HassanAbad
  161.     HaghShenas  str.
  162.     Navab       str.
  163.     13599 - Tehran
  164.     Iran
  165.  
  166.  
  167.  
  168.